import Mock from 'mockjs'

// get请求从config.url中获取参数，post请求从config.body中获取参数
// function paramToObj(url) {
// 	const search = url.split('?')[1];
// 	if (!search) {
// 		return {}
// 	}
// 	return JSON.parse(`{${decodeURIComponent(search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"')}}`)
// }

const Random = Mock.Random;
Random.extend({
	role: function() {
		var roles = ['酒剑仙', '李逍遥', '唐钰小宝', '刘晋元', '赵灵儿', '林月如', '阿奴', '圣女', '剑圣', '拜月', '大石鼓', '姜明']
		return this.pick(roles)
	}
})
Random.email();
let list = [];
const count = 200;

for (let i = 0; i < count; i++) {
	list.push(
		Mock.mock({
			id: '@guid',
			num: Random.increment(0),
			name: '@role',
			birth: '@date',
			'age|18-60': 1,
			address: '@city(true)'
		})
	);
}

/**
 * 添加序号
 * @param1 {Array} arr: 需要添加序号的数组
 * @param2 {number} space: 可以是任意整数
 * 例: 1代表序号加1，-1代表序号减1
 */
const changeNum = (arr, space) => {
	arr.forEach(item => {
		item.num = item.num + space;
	})
}

export default {
	/**
	 * 获取表格数据
	 * @param1 {object} config: 前端传的入参
	 * {
	 * 		{string} name(非必传): 名字，''则表示查所有人
	 *    {number} page(必传): 分页表格页码
	 *    {number} limit(必传): 每页限制多少条
	 * }
	 */
	getUserList: config => {
		const { name, page = 1, limit = 10 } = JSON.parse(config.body);
		const mockList = list.filter(user => {
			if (name && user.name === -1) {
				return false;
			}
			return true;
		});
		const pageList = mockList.filter((item, index) => {
			return (index < limit * page) && index >= limit * (page - 1);
		})
		return {
			code: 20000,
			count: mockList.length,
			list: pageList
		}
	},

	/**
	 * 新增用户
	 * @param1 {object} config: 前端传的入参
	 * {
	 * 	 {string} name(必传): 名字
	 *   {number} age(必传): 年龄 
	 *   {string} birth(必传): 日期
	 *   {string} address(必传): 地址
	 * }
	 */
	createUser: config => {
		const { name, age, birth, address } = JSON.parse(config.body);
		changeNum(list, 1);
		list.unshift(
			Mock.mock({
				id: '@guid',
				num: 1,
				name,
				age,
				birth,
				address
			})
		);
		console.log(list);
		return {
			code: 20000,
			msg: '新增成功'
		}
	},

	/**
	 * 修改用户
	 * @param1 {object} config: 前端传的入参
	 * {
	 * 	 {string} name(必传): 名字
	 *   {number} age(必传): 年龄 
	 *   {string} birth(必传): 日期
	 *   {string} address(必传): 地址
	 * }
	 */
	editUser: config => {
		const { id, name, age, birth, address } = JSON.parse(config.body);
		list.some(item => {
			if (item.id === id) {
				item.name = name;
				item.age = age;
				item.birth = birth;
				item.address = address;
				return true;
			}
		});
		return {
			code: 20000,
			msg: '编辑成功'
		}
	},

	/**
	 * 删除用户
	 * @param1 {string} id(必传): 表格行唯一id
	 */
	delUser: config => {
		const { id } = JSON.parse(config.body);
		if (!id) {
			return {
				code: -2,
				msg: '请传id'
			}
		} else {
			let index = list.findIndex((item, index) => {
				if (item.id === id) {
					list.splice(index, 1);
					return true;
				}
			});
			for (let i = index; i < list.length; i++) {
				list[i].num = list[i].num - 1;
			}
			return {
				code: 20000,
				msg: '删除成功'
			}
		}
	}


}